/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package models;

import utils.conexao.Entity;
import utils.conexao.Id;

/**
 *
 * @author Thiago Lippel
 */
public class Cliente extends Entity {
 
    @Id
    private int codigoCliente;

    private String nome;
    private String nomeFantasia;
    private String cnpj;

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        if(nome.isEmpty())
            throw new IllegalArgumentException("Nome é um campo obrigatório");
        this.nome = nome;
    }

    /**
     * @return the nomeFantasia
     */
    public String getNomeFantasia() {
        return nomeFantasia;
    }

    /**
     * @param nomeFantasia the nomeFantasia to set
     */
    public void setNomeFantasia(String nomeFantasia) {
        this.nomeFantasia = nomeFantasia;
    }

    /**
     * @return the cnpj
     */
    public String getCnpj() {
        return cnpj;
    }

    /**
     * @param cnpj the cnpj to set
     */
    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }
    
    @Override
    public int getId() {
        return this.codigoCliente;
    }

    @Override
    public boolean equals(Object obj) {
        if ( obj == null )
            return false;
        
        if ( !(obj instanceof Cliente) )
            return false;
        
        if ( getId() == 0 && ((Cliente) obj).getId() == 0 )
            return super.equals(obj);
        
        // Retorna True, se os dois IDs forem iguais
        return ( getId() == ((Cliente) obj).getId() );
    }

    @Override
    public String toString() {
        return this.nome;
    }
}